The invention relates generally to computer system memory and, more particularly, to the protection of computer system memory configuration data.
During power-on self test (POST) and reset operations, computer systems generally determine the size and configuration of their main memory. Typically, basic input-output system (BIOS) routines determine the size and operating characteristics of main memory and, using this information, configure system hardware (e.g., memory control interface) so that the memory may be accessed during the normal course of operation (e.g., following completion of POST processing and invocation of an operating system).
In some computer systems, main memory may include nonvolatile storage elements that store memory configuration data. This data may be interrogated by BIOS routines during start-up or POST processing and used to configure memory interface hardware. Computer systems that include synchronous dynamic random access memory (SDRAM) dual in-line memory modules (DIMMs) designed to operate in conformance with the serial presence detect (SPD) specification, for example, include a 2048 bit EEPROM component. This nonvolatile storage contains data programmed by the DIMM manufacturer that identifies the module type and various SDRAM organization and timing parameters.
In some cases, SPD DIMMs do not provide a mechanism (e.g., a write-protect pin) to protect the SPD EEPROM against inadvertent write operations. In other cases, SPD DIMMs provide a protection mechanism that may not be properly used. If memory configuration data (e.g., SPD EEPROM) is altered, it may not be possible to properly configure memory control hardware. Thus, it would be beneficial to provide a technique to protect memory configuration data.
In one embodiment the invention provides a method to protect against system memory configuration data loss and/or corruption. The method includes obtaining configuration data from a computer system memory module, determining if the obtained configuration data is incorrect, and repairing the configuration data of the memory module if the obtained configuration data is incorrect. The method may be stored in any media that is readable and executable by a computer system.
In another embodiment, the invention provides a computer system that includes a random access memory having one or more modules (each memory module having module configuration data), a nonvolatile storage element having stored therein configuration data for each of the one or more memory modules, and a processor module operatively coupled to the random access memory and nonvolatile storage element, where the computer processor is adapted to determine if the configuration data from one of the memory modules is incorrect and, if it is, use at least a portion of the configuration data from the nonvolatile storage element to replace at least a portion of the configuration data of the memory module having the incorrect configuration data.